﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;

namespace WcfService1
{
    public class DAL
    {

        //public CiudadanoEntity GetCiudadano()
        //{
        //    CiudadanoEntity objCiudadano = new CiudadanoEntity();
        //    objCiudadano.DNI  = "10277124";
        //    objCiudadano.Nombre  = "Victor";
        //    objCiudadano.ApellidoPaterno  = "Aguayo";
        //    objCiudadano.ApellidoMaterno = "Seminario";
        //    objCiudadano.Sexo = "M";

        //    return objCiudadano;
        //}


        public CiudadanoEntity GetCiudadano(String strDNI)
        {
            List<SqlParameter> par;
            par = ObtenerParametros(strDNI);
            return Alexim.DBUtility.SqlHelper.ExecuteReaderWithOneResult<CiudadanoEntity>(Alexim.DBUtility.SqlHelper.ConnectionString,
                CommandType.StoredProcedure, "UP_GetCiudadano", ObtenerDatoReader, par.ToArray());

        }


        public CiudadanoEntity GetCiudadanoFull(String strDNI)
        {
            List<SqlParameter> par;
            par = ObtenerParametros(strDNI);
            return Alexim.DBUtility.SqlHelper.ExecuteReaderWithOneResult<CiudadanoEntity>(Alexim.DBUtility.SqlHelper.ConnectionString,
                CommandType.StoredProcedure, "UP_GetCiudadanoFull", ObtenerDatoReaderFull, par.ToArray());

        }

        private List<SqlParameter> ObtenerParametros(String strDNI)
        {
            SqlParameter sqlpar;
            List<SqlParameter> par = new List<SqlParameter>();

            sqlpar = new SqlParameter("@DNI", SqlDbType.VarChar, 10);
            if (strDNI != "")
                sqlpar.Value = strDNI;
            else
                sqlpar.Value = DBNull.Value;
            par.Add(sqlpar);

            return par;
        }


        private CiudadanoEntity ObtenerDatoReader(IDataReader ir)
        {
            CiudadanoEntity entity = new CiudadanoEntity();

            entity.Nombre = Alexim.DBUtility.SqlHelper.ConvertToNonNullableOrDefaultValue<String>(ir.GetString(0));
            entity.ApellidoPaterno = Alexim.DBUtility.SqlHelper.ConvertToNonNullableOrDefaultValue<String>(ir.GetString(1));
            entity.ApellidoMaterno = Alexim.DBUtility.SqlHelper.ConvertToNonNullableOrDefaultValue<String>(ir.GetString(2));
            entity.FechaNacimiento = Alexim.DBUtility.SqlHelper.ConvertToNonNullableOrDefaultValue<DateTime>(ir.GetDateTime(3));
            entity.Sexo = Alexim.DBUtility.SqlHelper.ConvertToNonNullableOrDefaultValue<String>(ir.GetString(4));

            return entity;
        }

        private CiudadanoEntity ObtenerDatoReaderFull(IDataReader ir)
        {
            CiudadanoEntity entity = new CiudadanoEntity();

            entity.DNI = Alexim.DBUtility.SqlHelper.ConvertToNonNullableOrDefaultValue<String>(ir.GetString(0));
            entity.Nombre = Alexim.DBUtility.SqlHelper.ConvertToNonNullableOrDefaultValue<String>(ir.GetString(1));
            entity.ApellidoPaterno = Alexim.DBUtility.SqlHelper.ConvertToNonNullableOrDefaultValue<String>(ir.GetString(2));
            entity.ApellidoMaterno = Alexim.DBUtility.SqlHelper.ConvertToNonNullableOrDefaultValue<String>(ir.GetString(3));
            entity.LugarNacimiento = Int16.Parse(Alexim.DBUtility.SqlHelper.ConvertToNonNullableOrDefaultValue<String>(ir.GetString(4)));
            entity.Estatura = Alexim.DBUtility.SqlHelper.ConvertToNonNullableOrDefaultValue<float>(ir.GetFloat(5));
            entity.Sexo = Alexim.DBUtility.SqlHelper.ConvertToNonNullableOrDefaultValue<String>(ir.GetString(6));
            entity.EstadoCivil = Alexim.DBUtility.SqlHelper.ConvertToNonNullableOrDefaultValue<String>(ir.GetString(7));
            entity.GradoInstruccion = Alexim.DBUtility.SqlHelper.ConvertToNonNullableOrDefaultValue<String>(ir.GetString(8));
            entity.Estado = Alexim.DBUtility.SqlHelper.ConvertToNonNullableOrDefaultValue<Int32>(ir.GetInt32(9));
            entity.FechaExpedicion = Alexim.DBUtility.SqlHelper.ConvertToNonNullableOrDefaultValue<DateTime>(ir.GetDateTime(10));
            entity.FechaNacimiento = Alexim.DBUtility.SqlHelper.ConvertToNonNullableOrDefaultValue<DateTime>(ir.GetDateTime(11));
            entity.Foto = (byte[])ir.GetValue(12);




            return entity;
        }
    }
}